package com.jandar.pile.common.util;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author : cyt
 * @date : 2019/3/4
 */
public interface IParamBundle {

    List<Integer> getIntegerList(String key);
    String getString(String key);

    String getString(String key, String defVal);

    String getString(String key, ParamFilter<String> paramFilter);

    String getString(String key, String defVal, ParamFilter<String> paramFilter);

    Integer getInt(String key);

    Integer getInt(String key, Integer defVal);

    Integer getInt(String key, ParamFilter<Integer> paramFilter);

    Integer getInt(String key, Integer defVal, ParamFilter<Integer> paramFilter);

    Boolean getBoolean(String key);

    Boolean getBoolean(String key, Boolean defVal);

    Boolean getBoolean(String key, ParamFilter<Boolean> paramFilter);

    Boolean getBoolean(String key, Boolean defVal, ParamFilter<Boolean> paramFilter);

    Double getDouble(String key);

    Double getDouble(String key, Double defVal);

    Double getDouble(String key, ParamFilter<Double> paramFilter);

    Double getDouble(String key, Double defVal, ParamFilter<Double> paramFilter);

    Long getLong(String key);

    Long getLong(String key, Long defVal);

    Long getLong(String key, ParamFilter<Long> paramFilter);

    Long getLong(String key, Long defVal, ParamFilter<Long> paramFilter);

    List<Long> getLongList(String key);

    List<Long> getLongList(String key, List<Long> defVal);

    List<Long> getLongList(String key, ParamFilter<List<Long>> paramFilter);

    List<Long> getLongList(String key, List<Long> defVal, ParamFilter<List<Long>> paramFilter);

    Date getDate(String key);

    Date getDate(String key, String format);

    Date getDate(String key, ParamFilter<Date> paramFilter);

    Date getDate(String key, String format, ParamFilter<Date> paramFilter);

    <T> T get(String key, T defVal);

    <T> T get(String key, T defVal, ParamFilter<T> paramFilter);

    Map<String, Object> getParam();

    PageBundle getPageBundle();

    PageBundle getPageBundle(String pageName, String sizeName);

    PageBundle getPageBundle(int pageDefVal, int sizeDefVal);

    PageBundle getPageBundle(String pageName, int pageDefVal, String sizeName, int sizeDefVal);
}
